Natural Language Processing (NLP) and Natural Language Understanding (NLU) involve using computer processing to extract meaningful information from natural language inputs such as human generated speech and text. One recent application of such technology is processing speech and/or text queries in mobile devices such as smartphones.
U.S. Patent Publication 20110054899 describes a hybrid client-server NLU arrangement for a mobile device. Various example screen shots of the application interface 100 from one such mobile device NLU application, Dragon Mobile Assistant for Android, are shown in FIGS. 1A-C. Dragon Mobile Assistant processes speech query inputs and obtains simultaneous search results from a variety of top websites and content sources. Such applications require adding an NLU component to an existing web search algorithm and an automatic speech recognition (ASR) arrangement in order to extracting semantic meaning from the input queries.
An NLU application based on ASR utilizes a statistical language model to initially recognize the words or likely words that were uttered based on probabilities such as the probability that an utterance is a given word based on one or more previously recognized words. Some language models are topic domain-specific such as medical radiology or aircraft control. A language model is often built by analyzing a large set of representative sentences, phrases or the like, to obtain statistics about word occurrence frequency, which words tend to occur after other words or phrases, etc.
The recognition grammars acts to interpret the semantic meanings of the recognized words. In this context, a recognition grammar is a set of phrases that a system is prepared to recognize. Conceptually, the phrases in a grammar represent all legitimate utterances a user may make. If a user utterance is included in the grammar, the system recognizes words of the utterance. If the user utters something that is not in the grammar, the utterance may be considered ungrammatical (“out-of-grammar”), and the system may not recognize the utterance correctly.
However, typically there are many ways a human can express a particular idea or command. For example, a user may order “two large pizzas, one with olives and the other with anchovies,” or the user may say she wants “one olive pizza and one anchovy pizza, both large.” Both utterances have the same meaning. Thus, a grammar writer's task involves predicting a set of phrases and encoding the phrases in the grammar. However, due to the variety of ways ideas and commands can be expressed, a grammar that accommodates a reasonable range of expressions can be quite large and difficult to design. Furthermore, the complexity of a grammar greatly affects speed and accuracy of an ASR system. Thus, complex grammars should be constructed with as much care as complex software programs. Grammar writing, however, is an unfamiliar task for most software developers, and creating a high-quality, error-free grammar requires somewhat different skills than programming in a language, such as Java or C++. For example, grammars are inherently non-procedural. Thus, many typical software development approaches are not applicable to grammar development.
In a speech-enabled NLU application, recognition slots are sometimes used to hold individual pieces of information from a recognized utterance. For example, in an automated banking system, slots may be defined for: (1) command-type (examples of which may include deposit, withdrawal, bill-payment and the like); (2) source-account (checking, savings or money-market); and (3) amount. An NLU application fills these slots with logical representations of recognized words and then passes the slots to application code for processing. For example, the phrases “the first of March” and “March the first” may cause a slot labeled date to be filled with “Mar01” or some other unambiguous date representation.
Developing NLU grammars is a time-consuming expensive process that requires considerable time and effort from human experts using large databases.